Processing systems generally include one or more processors (or “processing units”), such as a Central Processing Unit (CPU), a Digital Signal Processor (DSP) and/or a Graphics Processing Unit (GPU) to give just some examples. Processors are typically configured to execute operations directed by instructions of a computer program, such as moving data and/or manipulating data within the processing system. For example, an operation of a program may involve performing arithmetic on data items, such as multiplication or addition. Some processors may be more suited to particular tasks than other processors. For example, a CPU may be designed as a general purpose processor which can process a variety of operations fairly efficiently, whereas a DSP may be specifically designed with its architecture optimized for the operational needs of digital signal processing, whilst a GPU may be specifically designed for processing graphics data.
There are many different computer coding languages in which a computer programmer may write a computer program, but some of the languages are more popular than others, for example C code is widely known by computer programmers. It can be useful for a processing system to include a processor (e.g. a CPU) which is designed to process the code of a program written in a common computer language, such as C, so that it is simple for programmers to write code which can be processed by the processing system. However, in some situations, it may be beneficial for a processing system to execute particular types of operations on dedicated processors which are specifically adapted for executing operations of those particular types. For example, it may be more efficient (e.g. in terms of time, power and/or use of processing resources) to execute operations for digital signal processing on a DSP rather than on a CPU. Therefore, two or more processors may be included in a processing system, whereby operations may be executed by a processor which is best suited for executing the operation. For example, a processing system may include a main processor (or “program processor”), e.g. a general-purpose CPU, on which a program may be executed, and a dedicated processor, e.g. a DSP or a GPU, which is adapted for executing operations of a particular type. When the program processor comes to an operation of the particular type within a program (e.g. a vector processing operation) the program processor can pass (i.e. offload) the operation to the dedicated processor for execution thereon. The dedicated processor may have a register bank including a plurality of registers into which data can be loaded for an operation to be processed by the dedicated processor. The dedicated processor can then execute the operation using the data stored in the registers of its register bank. The results of the operation may be stored in the registers of the register bank when the dedicated processor has completed execution of the operation. The program processor can then read the data out of the registers and carry on with execution of the program. Alternatively, a memory (instead of the register bank of the dedicated processor) may be used for communicating data between the dedicated processor and the program processor. For example, the dedicated processor may retrieve data from the memory and may perform an operation on the retrieved data. The dedicated processor may store the results of an operation in the memory when the dedicated processor has completed execution of the operation, and the program processor may then read the data out of the memory.
In this way, the program can be executed more efficiently because the dedicated processor is adapted to be more efficient than the program processor at executing operations of the particular type (e.g. a DSP is usually more efficient than a CPU at executing vector processing operations). Therefore, by using the dedicated processor, the job of executing some of the operations of a program can be offloaded from the main processor (the “program processor”). In this way, the workload of the program processor can be reduced. Any improvements to the efficiency (e.g. in terms of speed, power and/or use of processing resources) with which a processing system can execute operations of a program are likely to be beneficial.